Hive 组件部署
Hive详解:https://www.cnblogs.com/huifeidezhuzai/p/9251969.html
本环节需要使用 root 用户完成相关配置,已安装 Hadoop 及需要配置前置环境,具体部署要求如下:
1、解压 Hive 安装包到“/usr/local/src”路径,并使用相关命令,修改解压后文件夹名为 Hive,进入 Hive 文件夹,并将查看内容截图;
tar zxvf /h3cu/apache-hive-1.2.2-bin.tar.gz -C /usr/local/src/
mv apache-hive-1.2.2-bin hive
2、设 置 Hive 环境变量 ( HIVE_HOME=/usr/local/src/hive ;PATH=$PATH:$HIVE_HOME/bin),并使环境变量只对当前用户生效;
vi ~/.bash_profile
export HIVE_HOME=/usr/local/src/hive
export PATH=$PATH:$HIVE_HOME/bin
source ~/.bashrc
验证:hive --version
SOURCE /usr/local/src/hive/scripts/metastore/upgrade/mysql/hive-schema-0.12.0.mysql.sql;
3、新建并配置 hive-site.xml 文件,实现“Hive 元存储”的存储位置为 MySQL数据库;
Hive配置文件里要用到HDFS的一些路径,需要先手动创建。
hdfs dfs -mkdir -p /usr/local/src/hive/warehouse
hdfs dfs -mkdir -p /usr/local/src/hive/tmp
hdfs dfs -mkdir -p /usr/local/src/hive/log
hdfs dfs -chmod g+w /usr/local/src/hive/warehouse
hdfs dfs -chmod g+w /usr/local/src/hive/tmp
hdfs dfs -chmod g+w /usr/local/src/hive/log
上述语句涉及hive-site.xml hive.metastore.warehouse.dir等,表示数据在hdfs中的存储位置
5.2 hive-env.sh (所有节点)
export HADOOP_HOME=/usr/local/src/hadoop
export HIVE_CONF_DIR=/usr/local/src/hive/conf
5.3 hive-log4j.properties(所有节点)
首先创建log存放的文件夹
mkdir /usr/local/src/hive/logs
然后配置hive-log4j.properties
hive.log.dir=/usr/local/src/hive/logs
5.4 服务端hive-site.xml
服务端指的是Metastore服务所在的机器,即安装metastore的机器,这里是51和52。
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://master:3306/metastore?createDatabaseIfNotExist=true</value>
<description>the URL of the MySQL database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/usr/hive/warehouse</value>
</property>
<property>
<name>hive.exec.scratchdir</name>
<value>/usr/local/src/hive/tmp</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>/usr/local/src/hive/log</value>
</property>
5.5 客户端hive-site.xml
这里指的是53和54。
<property>
<name>hive.metastore.uris</name>
<value>thrift://master:9083,master2:9083</value>
<description>IP address (or fully-qualified domain name) and port of the metastore host</description>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/usr/local/src/hive/warehouse</value>
</property>
<property>
<name>hive.exec.scratchdir</name>
<value>/usr/local/src/hive/tmp</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>/usr/local/src/hive/log</value>
</property>
6. 启动Hive
- 启动MySQL
$ service mysqld start
- 启动metastore服务
$ service hive-metastore start
- 启动Hive CLI
因为在4台机器上都安装了hive,并且作了相关的配置,所有四台机器均可以启动Hive CLI(Hive交互式shell)
$ hive
cd /usr/local/src/hive/conf/
cp hive-default.xml.template hive-site.xml
vim hive-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
<property>
<name>hive.server2.thrift.bind.host</name>
<!--172.16.12.160是Hive部署节点的IP,不是Hadoop集群master的IP -->
<value>172.16.12.160</value>
</property>
<property>
<name>hive.server2.long.polling.timeout</name>
<value>5000</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value><!-- 数据库连接用户名 -->
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value><!-- 数据库连接密码 -->
</property>
<property>
<name>hive.hwi.listen.host</name>
<value>0.0.0.0</value>
</property>
<property>
<name>hive.hwi.war.port</name>
<value>9999</value>
</property>
<property>
<name>hive.hwi.war.file</name>
<value>/lib/hive-hwi-1.0.1.war</value>
</property>
</configuration>
实现“Hive 元存储”的存储位置为 MySQL数据库 大概修改以下配置:
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost/hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>*</value>
</property>
4、初始化 Hive 元数据(将 MySQL 数据库 JDBC 驱动拷贝到 Hive 安装目录的lib 下),初始化结果截图;
cp /h3cu/mysql-connector-java-5.0.8-bin.jar /usr/local/src/hive/lib
初始化 Hive 元数据:
pwd
# /usr/local/src/hive/bin/
schematool -dbType mysql -initSchema
5、启动 Hive, 检查是否安装成功,截图保存结果;
hive
6、按指定要求创建 Hive 内部表和外部表,截图保存结果;
7、按要求实现内外部表转换,截图保存结果;
8、按指定要求创建分区表,截图保存结果。